package org.forum.dao.base;

import java.io.Serializable;
import java.util.List;

public interface BaseDao<T> {
	
	/**
	 * 
	 * @param entizyClazz 要加载的实体的Class类型
	 * @param id	实体在数据库中的主键值
	 * @return
	 */
	T get(Class<T> entizyClazz, Serializable id);
	
	/**
	 * 如果数据库中已经有次实体了，则更新；
	 * 如果数据库中不存在相应的实体，则保存新的实体
	 * @param entity
	 * @return
	 */
	Serializable save(T entity);
	
	void update(T entity);
	
	void delete(T entity);
	
	/**
	 * 根据实体id删除实体
	 * @param entityClazz	用于获取实体的类名
	 * @param id
	 */
	void delete(Class<T> entityClazz, Serializable id);
	
	/**
	 * 查找所有的表中有的实体
	 * @param entityClazz
	 * @return
	 */
	List<T> findAll(Class<T> entityClazz);
	
	long findCount(Class<T> entityClazz);
	
}
